package com.hzncc.flowable_diboot.project_contracts.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.diboot.core.entity.BaseModel;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* 项目类产品供销合同 Entity 定义
* @author MyName
* @version 1.0
* @date 2024-09-26
* Copyright © MyCorp
*/

@TableName("mdl_project_sam_contract")
@Getter @Setter @Accessors(chain = true)
public class ProjectSamContract extends BaseModel {
    private static final long serialVersionUID = 1985520692790539732L;

    /**
     * 租户
     */
    @NotNull(message = "租户不能为空")
    @TableField()
    private String tenantId;

    /**
     * 公司合同模板
     */
    @TableField()
    private Boolean companyContractTemplate;

    /**
     * 甲方
     */
    @Length(max=100, message="甲方长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyA;

    /**
     * 乙方
     */
    @Length(max=100, message="乙方长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyB;

    /**
     * 签订时间
     */
    @TableField()
    private LocalDateTime signingTime;

    /**
     * 签订地
     */
    @Length(max=100, message="签订地长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String signingLocation;

    /**
     * 买卖内容
     */
    @Length(max=100, message="买卖内容长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String tradeContent;

    /**
     * 合同补充附件
     */
    @TableField()
    private String contractSupplement;

    /**
     * 合计（小写）
     */
    @TableField()
    private BigDecimal total;

    /**
     * 合计（大写）
     */
    @Length(max=100, message="合计（大写）长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String totalUppercase;

    /**
     * 交货时间
     */
    @TableField()
    private String deliveryTime;

    /**
     * 交货地点
     */
    @Length(max=100, message="交货地点长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String deliveryLocation;

    /**
     * 交货天数
     */
    @Length(max=100, message="交货天数长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String deliveryDuration;

    /**
     * 收货人姓名
     */
    @Length(max=100, message="收货人姓名长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consigneeName;

    /**
     * 收货人电话
     */
    @Length(max=100, message="收货人电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consigneePhone;

    /**
     * 设备使用地点
     */
    @Length(max=100, message="设备使用地点长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String equipmentUsageLocation;

    /**
     * 付款方式
     */
    @TableField()
    private String paymentMethod;

    /**
     * 机械设备质保期
     */
    @Length(max=100, message="机械设备质保期长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String mechanicalEquipmentWarranty;

    /**
     * 电器设备质保期
     */
    @Length(max=100, message="电器设备质保期长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String electricalEquipmentWarranty;

    /**
     * 支付预付款
     */
    @Length(max=100, message="支付预付款长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String advancePayment;

    /**
     * 甲方 
     */
    @Length(max=100, message="甲方 长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyASigns;

    /**
     * 甲方法定代表人
     */
    @Length(max=100, message="甲方法定代表人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyALegalRepresentative;

    /**
     * 甲方委托代理人
     */
    @Length(max=100, message="甲方委托代理人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAAuthorizedRepresentative;

    /**
     * 甲方地址
     */
    @Length(max=100, message="甲方地址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAAddress;

    /**
     * 甲方电话
     */
    @Length(max=100, message="甲方电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyATelephone;

    /**
     * 甲方传真
     */
    @Length(max=100, message="甲方传真长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAFax;

    /**
     * 甲方账户名称
     */
    @Length(max=100, message="甲方账户名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAAccountName;

    /**
     * 甲方开户行
     */
    @Length(max=100, message="甲方开户行长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAOpeningBank;

    /**
     * 甲方账号
     */
    @Length(max=100, message="甲方账号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyAAccountNumber;

    /**
     * 乙方委托代理人
     */
    @TableField()
    private String partyBAuthorizedRepresentative;

    /**
     * 乙方账户名称
     */
    @Length(max=100, message="乙方账户名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyBAccountName;

    /**
     * 合同附件
     */
    @TableField()
    private String appendix;

    /**
     * 项目类合同id
     */
    @Length(max=32, message="项目类合同id长度应小于32")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String contractId;

    /**
     * 甲方合同签订后期限
     */
    @Length(max=100, message="甲方合同签订后期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyASignedContractPostLimit;

    /**
     * 预付款金额
     */
    @TableField()
    private BigDecimal prepaymentAmount;

    /**
     * 余款金额
     */
    @TableField()
    private BigDecimal remainingAmount;

    /**
     * 发货前期限
     */
    @Length(max=100, message="发货前期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String preDeliveryLimit;

    /**
     * 甲乙合同签订后期限
     */
    @Length(max=100, message="甲乙合同签订后期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String contractSignedPostLimitOfAB;

    /**
     * 签订后付款比例
     */
    @TableField()
    private BigDecimal paymentRatioPostSigning;

    /**
     * 到货后期限
     */
    @Length(max=100, message="到货后期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String postArrivalLimit;

    /**
     * 到货后付款比例
     */
    @TableField()
    private BigDecimal paymentRatioPostArrival;

    /**
     * 验收合格后期限
     */
    @Length(max=100, message="验收合格后期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String postQualifiedInspectionLimit;

    /**
     * 验收后付款比例
     */
    @TableField()
    private BigDecimal paymentRatioPostQualifiedInspection;

    /**
     * 年质保后付清
     */
    @TableField()
    private BigDecimal annualWarrantyAndThenPayOffAll;

    /**
     * 甲乙合同签订前期限
     */
    @Length(max=100, message="甲乙合同签订前期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String contractSignedPreLimitOfAB;

    /**
     * 乙方向甲方期限
     */
    @Length(max=100, message="乙方向甲方期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String limitFromBToA;

    /**
     * 乙方向甲方付款比例
     */
    @TableField()
    private BigDecimal paymentRatioFromBToA;

    /**
     * 乙方货物验收合格后期限
     */
    @Length(max=100, message="乙方货物验收合格后期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String goodsReceivedQualifiedPostLimitOfB;

    /**
     * 履约保证金转质保金期限
     */
    @Length(max=100, message="履约保证金转质保金期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String performanceBondToQualityDepositPeriod;

    /**
     * 质保期期限
     */
    @Length(max=100, message="质保期期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String qualityGuaranteePeriod;

    /**
     * 乙方签字
     */
    @Length(max=100, message="乙方签字长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyBSigns;

    /**
     * 乙方法人
     */
    @Length(max=100, message="乙方法人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String partyBLegalRepresentative;

    /**
     * 乙方地址
     */
    @TableField()
    private String partyBAddress;

    /**
     * 乙方电话
     */
    @TableField
    private String partyBTelephone;

    /**
     * 乙方传真
     */
    @TableField
    private String partyBFax;

    /**
     * 乙方开户行
     */
    @TableField
    private String partyBOpeningBank;

    /**
     * 乙方账号
     */
    @TableField
    private String partyBAccountNumber;

}